로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
2. 모델 메타 클래스 | ✅ 저자: 이유정(박사)
모델에 대한 메타정보(정보에 대한 정보)”를 담는 클래스입니다. 모델이 "어떻게 저장될지, 어떻게 보일지, 어떤 규칙을 가질지" 정해주는 설정 모음
class Menu(models.Model):
name = models.CharField(max_length=100)
class Meta:
db_table = "menu" # 테이블 이름을 "menu"로 하자!
verbose_name = "메뉴" # 관리자에서 예쁘게 보이게!
Django는 모델 이름이 아니라
“앱이름 + 모델이름” 조합으로 DB 테이블 이름을 자동으로 만듭니다.
db_table = "menu"를 주면 테이블 이름이 menu로 바뀝니다.
- 역할: 실제 DB에서 이 모델의 테이블 이름을 직접 지정할 수 있어요.
- 예:
db_table = "products"
→ 실제 DB 테이블명이products
로 생성됨
- 역할: 두 개 이상의 필드를 묶어서 인덱스를 생성해 성능을 올려요.
- 예:
["driver", "restaurant"]
→ 이 두 필드를 자주 같이 검색할 때 유리함
- 역할: 두 개 이상의 필드를 묶어서 중복 없이 유일하게 유지해요.
- 예: 한
driver
가 동일한restaurant
에 중복해서 등록되지 않도록 막는 용도
- 역할: 보다 복잡한 제약 조건(조건부 유일성, 값 범위 등)을 직접 설정할 수 있어요.
- 예시:
username + country
조합이 유일해야 함age
는 0 이상 120 이하만 가능
- DB 테이블을 만들지 않고, 다른 모델에서 상속해서 재사용만 하겠다는 뜻
- 상속 전용 공통 모델을 만들고 싶을 때 사용
- 역할: 이 모델을 Django가 마이그레이션으로 관리할지 여부 결정
False
이면 Django가 이 테이블을 직접 만들지 않음 (이미 존재하는 테이블 연결할 때 사용)
- 역할: 사용자에게 부여할 추가 권한 이름을 직접 지정할 수 있어요.
- 예:
"can_deliver_pizzas"
→ “피자 배달 권한”
- 역할: Django가 자동으로 만드는 권한 종류를 설정해요.
- 기본값:
['add', 'change', 'delete', 'view']
- 예:
default_permissions = [('view',)]
→ 조회만 허용
- 역할: DB 테이블에 주석(설명)을 달 수 있어요.
- 예: 테이블 목적이나 의미를 DB 관리자가 볼 수 있게 설명 가능
- 역할: DB 테이블에 주석(설명)을 달 수 있어요.
- 예: 테이블 목적이나 의미를 DB 관리자가 볼 수 있게 설명 가능